using CfgTable;
using System.Collections.Generic;
using UnityEngine;

namespace IQIGame.Onigao.GamePlay
{
    public abstract class TViewEntity : TEntity
    {
        /// <summary>
        /// 唯一标识
        /// </summary>
        public abstract int id { get; }
        /// <summary>
        /// 模块化配置id（编辑器导出配置唯一标识）
        /// Modularized config id
        /// </summary>
        public abstract int mcid { get; }
        /// <summary>
        /// 会在大/小地图上显示的地图标记id
        /// </summary>
        public abstract int mapSymbolCid { get; }
        /// <summary>
        /// Transform代理
        /// </summary>
        public abstract TransformAgent transform { get; }
        /// <summary>
        /// 名称
        /// </summary>
        public abstract string name { get; }
        /// <summary>
        /// 视野范围
        /// </summary>
        public abstract int viewRange { get; }
        /// <summary>
        /// 可视角度
        /// </summary>
        public abstract int viewAngle { get; }
        /// <summary>
        /// 默认速度（单位：米）
        /// </summary>
        public abstract float defaultMeterSpeed { get; }
        /// <summary>
        /// 数据上纪录的位置（unity单位）
        /// 实际位置可能会和数据位置有出入，以数据为准时调用该属性
        /// </summary>
        public abstract Vector3 unityPosOfData { get; }
        public abstract Quaternion unityRotationOfData { get; }
        public abstract CfgPhysicalEntity cfgEntity { get; }
        public abstract TNavigationController navigationCtrl { get; }
        public abstract IReadOnlyList<int> offeredQuests { get; }
        public abstract AnimatorAgent GetAnimator();
        public abstract void UpdatePosToData(Vector3 position);
    }
}
